# null model
m0 = lmer(avlambda ~ (1|Binomial), data = df)
m1 = lmer(avlambda ~ Class + (1|Binomial),  data = df)
m2 = lmer(avlambda ~ Class + System + (1|Binomial), data = df)
m3 = lmer(avlambda ~ System + (1|Binomial), data = df)

# adding traits

# body size only
# class should be in each model because body size is normalised within classes
m4 = lmer(avlambda ~ log10(BodySize) + Class + (1|Binomial),  data = df)
m5 = lmer(avlambda ~ log10(BodySize) + Class + System + (1|Binomial),  data = df)
m6 = lmer(avlambda ~ Class*log10(BodySize) + (1|Binomial),  data = df)
m7 = lmer(avlambda ~ System*log10(BodySize) + (1|Binomial),  data = df)

# trophic level only
m8 = lmer(avlambda ~ TrophicLevel + (1|Binomial),  data = df)
m9 = lmer(avlambda ~ TrophicLevel + Class + (1|Binomial),  data = df)
m10 = lmer(avlambda ~ TrophicLevel + System + (1|Binomial),  data = df)
m11 = lmer(avlambda ~ Class*TrophicLevel + (1|Binomial),  data = df)
m12 = lmer(avlambda ~ System*TrophicLevel + (1|Binomial),  data = df)


# lifespan only
m13 = lmer(avlambda ~ LifeSpan + (1|Binomial),  data = df)
m14 = lmer(avlambda ~ LifeSpan + Class + (1|Binomial),  data = df)
m15 = lmer(avlambda ~ LifeSpan + System + (1|Binomial),  data = df)
m16 = lmer(avlambda ~ Class*LifeSpan + (1|Binomial),  data = df)
m17 = lmer(avlambda ~ System*LifeSpan + (1|Binomial),  data = df)

# all three traits
m18 = lmer(avlambda ~ log10(BodySize) + TrophicLevel + Class + (1|Binomial),  data = df)
m19 = lmer(avlambda ~ log10(BodySize) + LifeSpan + Class + (1|Binomial),  data = df)
m20 = lmer(avlambda ~ TrophicLevel + LifeSpan + (1|Binomial),  data = df)
m21 = lmer(avlambda ~ log10(BodySize) + TrophicLevel + LifeSpan + Class + (1|Binomial),  data = df)
compare_performance(m0, m1, m2, m3, # no traits
                    m4, m5, m6, m7, # body size
                    m8, m9, m10, m11, m12, # trophic level
                    m13, m14, m15, m16, m17, # lifespan
                    m18, m19, m20, m21, # variations of 2 or 3 traits
                    rank = TRUE) %>%
  kableExtra::kable() %>% kableExtra::kable_styling("striped")
## Warning: When comparing models, please note that probably not all models were fit from
##   same data.
Name Model AIC BIC R2_conditional R2_marginal ICC RMSE Sigma Performance_Score
m12 lmerMod -3484.318 -3434.858 0.0344799 0.0070380 0.0276364 0.1442165 0.1458214 0.7436109
m17 lmerMod -2792.812 -2745.157 0.0349758 0.0035132 0.0315735 0.1426739 0.1444300 0.6869477
m16 lmerMod -2754.346 -2682.864 0.0348728 0.0045354 0.0304756 0.1427100 0.1445135 0.6717119
m3 lmerMod -3731.612 -3700.451 0.0287336 0.0008569 0.0279006 0.1433590 0.1449232 0.6674733
m2 lmerMod -3698.554 -3642.465 0.0287815 0.0012209 0.0275943 0.1433705 0.1449900 0.6563250
m15 lmerMod -2821.070 -2785.329 0.0332686 0.0023704 0.0309716 0.1427849 0.1444749 0.6301942
m1 lmerMod -3716.499 -3672.874 0.0274099 0.0009377 0.0264971 0.1434913 0.1450286 0.6119816
m0 lmerMod -3749.237 -3730.540 0.0267208 0.0000000 0.0267208 0.1435183 0.1449990 0.5970885
m20 lmerMod -2764.790 -2735.121 0.0321373 0.0010856 0.0310854 0.1427699 0.1444436 0.5768952
m14 lmerMod -2806.674 -2759.019 0.0317655 0.0027432 0.0291021 0.1429363 0.1445953 0.5695060
m10 lmerMod -3477.528 -3440.432 0.0303236 0.0007225 0.0296225 0.1444603 0.1461167 0.5593490
m13 lmerMod -2838.051 -2814.223 0.0305789 0.0009854 0.0296227 0.1429702 0.1445652 0.5340956
m9 lmerMod -3464.275 -3414.814 0.0291992 0.0012213 0.0280120 0.1445836 0.1462083 0.5136546
m11 lmerMod -3438.892 -3364.701 0.0294176 0.0022798 0.0271998 0.1446067 0.1462690 0.5131828
m8 lmerMod -3495.097 -3470.367 0.0283156 0.0000626 0.0282548 0.1446258 0.1461892 0.4900129
m21 lmerMod -2620.727 -2561.679 0.0316940 0.0049938 0.0268343 0.1436730 0.1452933 0.4735210
m19 lmerMod -2690.376 -2637.026 0.0299372 0.0046017 0.0254526 0.1438789 0.1454150 0.4218233
m7 lmerMod -3300.138 -3250.908 0.0272120 0.0041042 0.0232031 0.1462725 0.1476922 0.2984165
m5 lmerMod -3285.099 -3223.563 0.0270297 0.0038099 0.0233085 0.1462965 0.1477618 0.2821156
m6 lmerMod -3272.807 -3198.964 0.0269604 0.0046568 0.0224079 0.1463353 0.1477959 0.2768063
m18 lmerMod -3229.298 -3174.085 0.0270545 0.0038142 0.0233293 0.1463291 0.1477786 0.2678371
m4 lmerMod -3302.971 -3253.742 0.0258020 0.0035489 0.0223323 0.1464042 0.1477872 0.2433530
check_model(m12)
## Registered S3 method overwritten by 'see':
##   method                    from      
##   plot.visualisation_recipe datawizard

plot_model(m12, type="pred")
## $System

## 
## $TrophicLevel

check_model(m17)

plot_model(m17, type="pred")
## $System

## 
## $LifeSpan

Mammals only

df = filter(df, Class == "Mammals")

# null model
m0 = lmer(avlambda ~ (1|Binomial), data = df)
m1 = lmer(avlambda ~ System + (1|Binomial), data = df)

# adding traits

# body size only
# class should be in each model because body size is normalised within classes
m2 = lmer(avlambda ~ log10(BodySize) + (1|Binomial),  data = df)
m3 = lmer(avlambda ~ log10(BodySize) + System + (1|Binomial),  data = df)
m4 = lmer(avlambda ~ System*log10(BodySize) + (1|Binomial),  data = df)

# trophic level only
m5 = lmer(avlambda ~ TrophicLevel + (1|Binomial),  data = df)
m6 = lmer(avlambda ~ TrophicLevel + System + (1|Binomial),  data = df)
m7 = lmer(avlambda ~ System*TrophicLevel + (1|Binomial),  data = df)
## fixed-effect model matrix is rank deficient so dropping 1 column / coefficient
# lifespan only
m8 = lmer(avlambda ~ LifeSpan + (1|Binomial),  data = df)
m9 = lmer(avlambda ~ LifeSpan + System + (1|Binomial),  data = df)
m10 = lmer(avlambda ~ System*LifeSpan + (1|Binomial),  data = df)

# all three traits
m11 = lmer(avlambda ~ log10(BodySize) + TrophicLevel + (1|Binomial),  data = df)
m12 = lmer(avlambda ~ log10(BodySize) + LifeSpan + (1|Binomial),  data = df)
m13 = lmer(avlambda ~ TrophicLevel + LifeSpan + (1|Binomial),  data = df)
m14 = lmer(avlambda ~ log10(BodySize) + TrophicLevel + LifeSpan + (1|Binomial),  data = df)
compare_performance(m0, m1, m2, m3, # no traits
                    m4, m5, m6, m7, # body size
                    m8, m9, m10, m11, m12, # trophic level
                    m13, m14,
                    rank = TRUE) %>%
  kableExtra::kable() %>% kableExtra::kable_styling("striped")
## Warning: When comparing models, please note that probably not all models were fit from
##   same data.
Name Model AIC BIC R2_conditional R2_marginal ICC RMSE Sigma Performance_Score
m0 lmerMod -549.5214 -536.8064 0.1411602 0.0000000 0.1411602 0.1288703 0.1333527 0.6658289
m1 lmerMod -537.0340 -515.8424 0.1440130 0.0018767 0.1424036 0.1288038 0.1334836 0.6304249
m5 lmerMod -528.4845 -511.5783 0.1470112 0.0010618 0.1461046 0.1294370 0.1340546 0.5333330
m10 lmerMod -478.5389 -444.8701 0.1662056 0.0094111 0.1582841 0.1292813 0.1343960 0.4965451
m6 lmerMod -517.4200 -492.0608 0.1474932 0.0073672 0.1411660 0.1295651 0.1342669 0.4723935
m9 lmerMod -497.5250 -472.2735 0.1578560 0.0052733 0.1533916 0.1295625 0.1344217 0.4720836
m7 lmerMod -512.8395 -483.2538 0.1489400 0.0077830 0.1422643 0.1294622 0.1342922 0.4681582
m8 lmerMod -508.3950 -491.5606 0.1522503 0.0001447 0.1521276 0.1297337 0.1344028 0.4518742
m13 lmerMod -499.5349 -478.4920 0.1547510 0.0005985 0.1542449 0.1296786 0.1344559 0.4356266
m3 lmerMod -515.4520 -490.0928 0.1441356 0.0054117 0.1394787 0.1297207 0.1343866 0.4095153
m4 lmerMod -506.7624 -472.9501 0.1470324 0.0094465 0.1388980 0.1296293 0.1344886 0.3978358
m11 lmerMod -519.3538 -498.2211 0.1409569 0.0091976 0.1329824 0.1299628 0.1344166 0.3917501
m2 lmerMod -528.0130 -511.1068 0.1372132 0.0054848 0.1324549 0.1300012 0.1343735 0.3888326
m12 lmerMod -503.7635 -482.7205 0.1416670 0.0251471 0.1195255 0.1307862 0.1349347 0.2748103
m14 lmerMod -494.8254 -469.5738 0.1441352 0.0240254 0.1230665 0.1306399 0.1349394 0.2653492
check_model(m12)

plot_model(m12, type="pred")
## $BodySize

## 
## $LifeSpan

plot_model(m12, type="re")
## Warning in checkMatrixPackageVersion(): Package version inconsistency detected.
## TMB was built with Matrix version 1.2.18
## Current Matrix version is 1.3.2
## Please re-install 'TMB' from source using install.packages('TMB', type = 'source') or ask CRAN for a binary version of 'TMB' matching CRAN's 'Matrix' package

plot_model(m12, type="resid")
## `geom_smooth()` using formula 'y ~ x'
## `geom_smooth()` using formula 'y ~ x'

plot_model(m12, type="est")

check_model(m17)

plot_model(m17, type="pred")
## $System

## 
## $LifeSpan